home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- * dropicon.c: アイコンのドロップ処理
- ******************************************************************************
- *
- *
- */
- #include <sxdef2.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <io.h>
- #include <jfctype.h>
- #include <doslib.h>
- #include <event.h> /* イベントマンを利用するときに必要 */
- #include <sxgraph.h> /* グラフ系マネージャを利用するときに必要 */
- #include <window.h> /* ウィンドウマンを利用するときに必要 */
- #include <dialog.h> /* ダイアログマンを利用するときに必要 */
- #include <control.h> /* コントロールマンを利用するときに必要 */
- #include <task.h> /* タスクマンを利用するときに必要 */
- #include "DC.h" /* このプログラム固有のヘッダファイル */
-
- /******************************************************************************
- * dropIcon(): アイコンのドロップ処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void dropIcon(ComVal *pcv)
- {
- int errCode, len;
- Drag *dragPtr; /* ドラッグポインタ */
- Cell *pcell; /* セルレコードへのポインタ */
- IcState *pis; /* アイコン管理レコードへのポインタ */
- char fWork[TS_NAMEMAX], ext[TS_NAMEMAX];
- char docFname[90], docPath[90];
-
- /* ドラッグポインタを取得する */
- errCode = TSGetDrag(&dragPtr);
- if (errCode < 0)
- /* ドラッグレコードが無い */
- return;
-
- MMHdlLock(dragPtr->cellList); /* セルリストへのハンドルをロックする */
- pcell = *dragPtr->cellList; /* セルレコードへのポインタを取得する */
- TSHideDrag(); /* ラバーバンドを消去する */
- /* セルレコードの情報の種類がアイコン管理レコード(上位ワードが'FS')
- か? */
- if (HIWORD(pcell->kind) == 'FS') {
- /* アイコンは1つ(ドラッグレコードのセルリストの長さがアイコン
- 管理レコードを含むセルレコードの長さと同一の場合)か? */
- if (dragPtr->size == sizeof(IcState) + 8 ) {
- /* アイコン管理レコードへのポインタを取得する */
- pis = (IcState *) pcell->data;
- /* ファイルの属性をチェックする */
- if ((pis->attrib & ATTRMASK) == TS_ARCH) {
- /* アイコンのフルパスを取得する */
- len = TSISRecToStr(
- pis, /* アイコン管理レコード */
- fWork); /* パス名格納ポインタ */
- stcgfe(ext,fWork);
- if (len >= 0) {
- /* ドラッグを終了する */
- TSEndDrag(TS_FINISH);
- /* データ読み込み */
-
- if (pcv->currentFname[0] != 0) {
- strcpy(&(pcv->pastFname[pcv->pastFno][0]),
- pcv->currentFname);
- pcv->pastofset[pcv->pastFno] = pcv->ofset;
-
- strcpy(&(pcv->pastPath[pcv->pastFno][0]),
- pcv->currentPath);
- if (GetData(pcv, fWork)) {
- pcv->pastFno = pcv->pastFno + 1;
- CMShine(pcv->btn12Hdl,C_ACTIVE);
- drawGraph(pcv, 0);
- } else {
- strcpy(pcv->currentFname,
- &(pcv->pastFname[pcv->pastFno][0]));
- strcpy(pcv->currentPath,
- &(pcv->pastPath[pcv->pastFno][0]));
- pcv->errorCode = 1;
- }
- } else {
- if (GetData(pcv, fWork)) {
- drawGraph(pcv, 0);
- } else {
- pcv->errorCode = 1;
- }
-
- }
- /* エラーが発生したか? */
- if (pcv->errorCode != 0) {
- /* エラーダイアログを表示する */
- DMError(D_CONFIRM,"エラーが発生しました!");
- pcv->errorCode = 0;
- }
- } else /*ファイル名の取得に失敗した */
- /* アイコンを元の位置にはじき飛ばして
- 終了する */
- TSEndDrag(TS_PUTBACK);
- } else /* ファイルアイコン以外の場合 */
- /* アイコンを元の位置にはじき飛ばして終了する */
- TSEndDrag(TS_PUTBACK);
- } else
- /* アイコン2つ以上か他のドラッグレコードだったら
- アイコンを元の位置にはじき飛ばして終了する */
- TSEndDrag(TS_PUTBACK);
- }
- /* セルリストへのハンドルのロックを解除する */
- MMHdlUnlock(dragPtr->cellList);
- }
- STR@ # EdEV 3.00 <